2015-04-03 2 views
0

Это мой вход:htmlspecialchars не работает, как я хочу! Я хочу, чтобы <быть Gt, НЕ >

< 

Это выход мне нужно:

gt 

Но это выход, я получаю от htmlspecialchars:

&gt; 

В принципе, я хочу получить результат htmlspecialchars, но на самом деле убрался. Мне нужны только символы a-z и 0-9.

Может ли кто-нибудь помочь?

+1

Если вы хотите что-то в своем собственном формате, вам нужно написать его самостоятельно. 'htmlspecialchars' предназначен для создания стандартных объектов HTML. – Barmar

+0

Интересно, есть ли здесь несколько [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Почему вы не хотите, чтобы стандартный HTML-объект выводился? –

ответ

2

Это должно работать для вас:

(Просто preg_replace() все символы, которые не находятся в a-z0-9 с пустой строкой, которая вы получаете от htmlentities())

<?php 

    $str = "<"; 
    echo preg_replace("/[^a-z0-9]/", "", htmlentities($str)); 

?> 

выход:

lt 
+0

Привет, спасибо, я попробовал это - почти там! :) Только одна проблема - она ​​преобразует & amp ... любые решения? – caustic

+1

@caustic Это то, что вы хотели ?! Вы сказали, что хотите удалить все, что ожидаете: 'a-z0-9'?! – Rizier123

+0

Упс - я имел в виду, я хочу вырезать усилитель! Конечно, он будет конвертировать & amp ... – caustic

0

Вы можете использовать регулярное выражение для удаления & и ;:

$result = preg_replace('/&(\w+);/', '$1', htmlspecialchars($string));