Вопрос
У меня возникли некоторые проблемы с разделителем для explode.У меня довольно короткая строка в качестве разделителя, и кажется, что она ломается, когда я добавляю другую букву (начало слова), но она не исправляется, когда я удаляю первую букву, что указывает на то, что дело не в длине.
А именно, (рабочий) код является:
$boom = htmlspecialchars("<td width=25 align=\"center\" ");
$arr[1] = explode($boom, $arr[1]);
Полная строка, которую я хотел бы использовать, это <td width=25 align=\"center\" class=\"
, и когда я начинаю добавлять в class
, взрыв ломается, и ничего не делается.Это происходит, как только я добавляю c
, и это не исчезнет, если я удалю <
, что было бы, если бы это был просто вопрос длины строки.
В принципе, проблема не является серьезной, поскольку я могу просто заменить class="
с помощью "" после взрыва и получаю тот же результат, но это вызвало у меня головную боль при диагностике, и это кажется действительно странной проблемой.Как бы то ни было, я использую PHP 5.3.0 в XAMPP 1.7.2.
Заранее спасибо!
Решение
Вы могли бы попробовать преобразовать каждое вхождение разделителя в исходную строку
"<td width=25 align=\"center\" "
во что-то более управляемое, например:
"банановый"
а потом взорваться на этом слове
Другие советы
Вы пробовали добавлять htmlspecialchars во взрыв.
$arr[1] = explode($boom, htmlspecialchars($arr[1]));
Я получаю неожиданные результаты без него, но с ним это работает отлично.
$s = '<td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td>'; $boom = htmlspecialchars("<td width=25 align=\"center\" class="); $sex = explode($boom, $s); print_r($sex);
Результаты:
Array ( [0] => <td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td> )
Принимая во внимание , что
$s = '<td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td>'; $boom = htmlspecialchars("<td width=25 align=\"center\" class="); $sex = explode($boom, htmlspecialchars($s)); print_r($sex);
Результаты
Array ( [0] => [1] => "asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td> )
Это связано с тем, что $boom закодирован в htmlspecialchar, < и > трансформироваться в <and >, который он не может найти в строке, поэтому он просто возвращает всю строку целиком.