Вопрос

У меня возникли некоторые проблемы с разделителем для 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 >, который он не может найти в строке, поэтому он просто возвращает всю строку целиком.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top