Мой сценарий: я пытаюсь стилизовать некоторые имена после хештега в строке.
пример:
$string = 'Lorem #Stewie Smith ipsum dolor #Peter Griffin sit amet, consectetuer #Stewie Griffin.';
Сначала я хочу поместить эти имена в массив, например:
array(
[item 1]
[firstname] => 'Peter'
[surname] => 'Griffin'
[item 2]
[firstname] => 'Stewie'
[surname] => 'Griffin'
[item 3]
[firstname] => 'Stewie'
[surname] => 'Smith'
)
так что я могу пройтись по массиву и проверить, есть ли имя и фамилия в моей базе данных.
Данные базы данных:
| id | имя | Фамилия |
| 1 | Питер | Гриффин |
| 2 | Стьюи | Смит |
После этой проверки мне нравится помещать в строку имя и фамилию div.
Кто знает ответ?
заранее спасибо
Вам нужно использовать регулярное выражение:
//Regular expression (explained below)
$re = "/\\#([a-zA-Z]*)\\s([a-zA-Z]*)/";
//String to search
$str = "Lorem #Stewie Smith ipsum dolor #Peter Griffin sit amet, consectetuer #Stewie Griffin.";
//Get all matches into $matches variable
preg_match_all($re, $str, $matches);
$matches
сейчас:
массив ( [0] => Массив ( [0] => # Стиви Смит [1] => # Питер Гриффин [2] => # Стиви Гриффин ) [1] => Массив ( [0] => Стьюи [1] => Питер [2] => Стьюи ) [2] => Массив ( [0] => Смит [1] => Гриффин [2] => Гриффин ) )
Таким образом, каждое имя содержится и доступно с:
$matches[0][n] //full match
$matches[1][n] //first name
$matches[2][n] //last name
Поместите это в массив:
$names = [];
foreach($matches[0] as $i => $v){
$names[] = array("firstname" => $matches[1][$i], "lastname" => $matches[2][$i]);
}
Сейчас $names
является:
массив ( [0] => Массив ( [имя] => Стьюи [фамилия] => Смит ) [1] => Массив ( [имя] => Питер [фамилия] => Гриффин ) [2] => Массив ( [имя] => Стьюи [фамилия] => Гриффин ) )
Отсюда вы можете циклически проходить по этому массиву, проверять свою базу данных, проверять по своему усмотрению, а затем делать с полученными данными все, что захотите.
Других решений пока нет …