Это мой код
<div style="display:inline-block; "> <?php $a = strtolower($criteria); if (strpos($a, 'fits models from: 11/2000') !== false) { echo 'Fits models from 2000,'; } ?> </div>
У меня проблема с пробелом. Он находит строку, если я использую только «подходящие модели» или если я использую «11/2000», но не два вместе взятых. Мне они нужны вместе, иначе это бесполезно.
EDIT: Я не могу сделать что-то вроде этого:
<?php $a = strtolower($criteria); if (strpos($a, 'fits models from') !== false) if (strpos($a, '11/2000') !== false) { echo 'Fits models from 2000,'; } ?> </div>
потому что я хочу использовать его, чтобы отделить ключевые факторы от текста, который является моделью автомобиля, от остальных и выводить эту информацию. Если $ criteria говорит, что «подходит для модели с 11/2000, но подходит только модели до 06/2002», тогда она будет выводить «подходит для модели с 2000», «подходит для модели до 2000 года», «подходит для модели с 2002 года», «подходит для модели до 2002' .
Чтобы идентифицировать неизвестный персонаж:
пример со строкой: "a:\xe2\x80\x85b"
которая выглядит как a: b
но с меньшим пространством.
$str = "a:\xe2\x80\x85b"; // I wrote \xe2\x80\x85 only to set $str and to show a working code, // but here I don't know what are the values of these bytes preg_match('~:(.*?)b~us', $str, $m); // shortest substring between : and b echo implode(' ', array_map(function ($b) { return dechex(ord($b)); }, str_split($m[1]))); // e2 80 85
Я получаю 3 байта e2
80
85
, затем я ищу, если он представляет один или несколько символов в таблице Юникода, и я нахожу: U+2005 e2 80 85 FOUR-PER-EM SPACE
Вывод: неизвестный символ представляет собой FOUR-PER-EM SPACE
(unicode point: U + 2005) и нуждается в 3 байтах e2 80 85
для кодирования в UTF-8. Поэтому я могу написать "\xe2\x80\x85"
в двойной кавычки.