PHP регулярное выражение не соответствует декодированной строке utf-8
У меня проблемы с некоторыми regex
заявление. Я не уверен, почему это происходит, однако я думаю, что это может быть связано с кодировкой символов.
Поэтому я использую curl для получения содержимого страницы с веб-сайта. Тогда я использую domXPath
запросить, чтобы получить определенный элемент, затем из этого элемента я получаю его содержимое, затем из этого содержимого я выполняю regex
заявление. Тем не менее regex
заявление не работает, и я не знаю почему.
Вот что я получаю от элемента:
X: asdasdfgdgdrrY: dfgdfgfgZ: ukuykyukjghj
a B 7dd.
Теперь, когда я пытаюсь сопоставить его с этим кодом:
/X: (?P<x>.*)Y: (?P<y>.*)Z: (?P<z>.*)\s*(?P<a>[a-zA-Z]+) (?P<b>[a-zA-Z]+) (?P<c>[0-9]+)dd/
Я проверил это в Dreamweaver, и оно совпадает, поэтому я понятия не имею, что не будет онлайн
Также на странице, которую я получаю, есть содержимое utf-8,
Я пытаюсь преобразовать содержимое, чтобы удалить символы utf-8, используя
iconv('utf-8', 'ISO-8859-1//IGNORE', $td->item(0)->nodeValue);
если я не удаляю символы utf-8, это странно Á
символы после значений переменных "a", "b" и "c".
1 ответ
Хорошо, я понял это, все, что мне нужно было сделать, чтобы избавиться от этих невидимых недопустимых символов:
$value = preg_replace("/[^a-zA-Z0-9 %():\$.\/-]/",' ',$value);
предварительно просто замените любой символ, который был недействительным, пробелом или пробелом. В моем случае я использовал пробел, потому что оказалось, что некоторые пробелы были недействительными.