2015-03-29 2 views
0

Я застрял, и я надеялся, что кто-нибудь сможет мне помочь.Редактирование таблицы html с использованием регулярных выражений php

Я создаю таблицу из данных файла, хранящихся на сервере. Я могу заставить таблицу заполнить, как я хочу, но у меня возникли проблемы с попыткой сделать глобальное изменение файла. В настоящее время в таблице есть имена людей, но я хотел бы сделать так, чтобы я мог нажимать на каждое индивидуальное имя и связать его с их адресом электронной почты. Вот мой код:

<html> 
<head><title>Showing Groups</title></head> 
<body> 
<?php 

    function DisplayRow($target) { 
    print "<tr>\n"; 
    $parts = split(" +", $target); 
    for ($i = 0; $i < 10; $i+=1) { 
     print "<td>$parts[$i]</td>\n"; 
    } 
    print "<td>\n"; 
    for ($i = 10; $i < count($parts); $i += 1) { 
     print "$parts[$i] "; 
    } 
    print "</td>\n"; 
    print "</tr>\n"; 
    } 

    print "<table border=1 width='95%'>\n"; 

    $allLines = file("cis.txt"); 
    foreach ($allLines as $oneLine) {  
    if (ereg("^[[:digit:]]", $oneLine)) { 
     DisplayRow($oneLine); 
    } 
    } 
    print "</table>\n"; 


?> 
</body> 
</html> 

Это создает таблицу, как это (но с границ таблицы):

32133 СНГ 100P 004 3,0 МВт 1230 1359 CLOU 203 Вонг, Джейн S

Я хотел бы сделать эти имена в столбце 10 для ссылки на их адрес электронной почты, как я сказал выше.

Я пытаюсь использовать это:

$oneLine=ereg_replace("^[[:upper:]][[:alpha:]]+,[[:blank:]] 
[[:upper:]][[:alpha:]]+$", 'x', $oneLine); 

Если регулярное выражение признает, что меня беспокоит с именами и х просто используется, потому что я пытался увидеть, если она будет работать. Мне также нужно знать, как я изменил бы каждое индивидуальное имя, чтобы использовать первый инициал первого имени и до 6 символов фамилии.

Спасибо!

+0

адреса электронной почты будут первыми инициалами первого имени (после запятой и пробелом) а затем до 6 символов их фамилии. –

ответ

0

Совет: убедитесь, что вы публикуете все инфо читатели, возможно, должны знать заранее, как формат, в котором находятся ваши адреса электронной почты. Теперь было немного неясно, где вы получите адреса, пока я не прочитаю комментарий к вашему сообщению , Иногда, когда вы работаете над проектом, вы можете забыть, что другие никогда не видели его раньше, и некоторые вещи, которые вы, возможно, думаете, очевидны и понятны для читателей Stack Overflow.

Для чего вы хотите использовать регулярные выражения, но на самом деле вам это не нужно. В зависимости от вашего навыка (и как строго отформатирован исходный файл) вы можете вместо этого использовать некоторые простые методы подстроки. Кстати, капитализация не имеет значения в адресах электронной почты. Если вы по-прежнему предпочитаете определенный формат по эстетическим соображениям, вы можете использовать strtoupper(), strtolower(), ucwords() и ucfirst(). См. PHP help для получения дополнительной информации об этих методах.

Простой пример:

<?php 
    $name = "Wong, Jane S"; // you get this from your .txt file 
    $name_parts = explode(", ", $name); // Split the string by comma+space 
    // Get the first character of the second part of the split string  
    echo substr($name_parts[1], 0, 1); 
    // Get the first 6 characters of the last name, or if the name is less than 
    // 6 characters long, it will get get the whole name 
    echo substr($name_parts[0], 0, 6); 
    echo "@example.com" 
?> 

Если вы действительно хотите, регулярное выражение, вы можете попробовать что-то вроде этого:

// Get the first 1 to 6 characters in the a-z range that are before the comma 
// Then get the first character after the comma and combine them 
preg_match('/^([a-zA-Z]{1,6}).+,\s([a-zA-Z])/', $name, $match); 
echo $match[2].$match[1]."@example.com"; 

принять к сведению, что в обоих примерах вы могли бы дезинфицировать адреса электронной почты, чтобы убедиться, что они содержат только допустимые символы (например, электронные письма не могут содержать пробелы, но некоторые имена используют их (например, Van Helsing)). Как продезинфицировать их будет зависеть от используемой системы форматирования (очистить пробел, заменить символом подчеркивания/тире и т. Д.)

Смежные вопросы