взорвать глюк в разделителе - PullRequest
0 голосов
/ 13 ноября 2009

У меня проблемы с разделителем для взрыва. У меня довольно короткая строка в качестве разделителя, и кажется, что она ломается, когда я добавляю еще одну букву (начало слова), но она не исправляется, когда я удаляю первую букву, что означает, что она не имеет длину .

То есть (рабочий) код:

$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.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2009

Вы можете попробовать преобразовать каждое вхождение разделителя в исходную строку

"<td width=25 align=\"center\" "

в более управляемом виде:

"банан"

и затем взорваться от этого слова

0 голосов
/ 13 ноября 2009

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

...