arrays — стиль конкретных слов в строке после хэштега

Мой сценарий: я пытаюсь стилизовать некоторые имена после хештега в строке.

пример:

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

Кто знает ответ?

заранее спасибо

1

Решение

Вам нужно использовать регулярное выражение:

//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] => Массив
(
[имя] => Стьюи
[фамилия] => Гриффин
)

)

Отсюда вы можете циклически проходить по этому массиву, проверять свою базу данных, проверять по своему усмотрению, а затем делать с полученными данными все, что захотите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]