Hämta första

taggen som text

Sonen ville göra om ett Python program till c# så han kunde bygga ett Winforms-GUI till det. Så med gemensamma krafter så översatta vi lite ormkod till c#. Hans tanke är att han har en lista i en textfil och listan innehåller ord som han vill slå upp mot Wikipedia för att sedan lyfta ut första paragrafen och konvertera HTML-texten till plain text.

För att få till det så skrev vi tre hjälpmetoder – första metoden hämtar in en webbsida och sparar i en string:

public static String GetHtml(string Url)
{
  string result;
  HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(Url);
  myRequest.Method = "GET";

  using (WebResponse myResponse = myRequest.GetResponse())
    using (StreamReader sr = new StreamReader(myResponse.GetResponseStream(), 
             Encoding.UTF8))
  result = sr.ReadToEnd();
          
  return result;
}

Nästa metod lyfter ut första <p> taggen och returnerat allt innehåll i den:

static string GetFirstParagraph(string inputHTML)
{
  Match m = Regex.Match(inputHTML, @"<p>\s*(.+?)\s*</p>");
  if (m.Success)
  {
    return m.Groups[1].Value;
  }
  else
  {
    return "";
  }
}

och till sist en metod för att rensa bort HTML-taggar – denna är inte bombsäker, men “good enough”:

public static string StripHTML(string input)
{
  return Regex.Replace(input, "<.*?>", String.Empty);
}

Hoppas det hjälper någon!

WordPress media upload

Hade mysko problem med att de filer/bilder som jag försökte lägga in i artiklarna betedde sig konstigt. Kunde se thumbnail och kunde även trycka edit. Men de syntes inte i artikeln och inte på “attributes” sidan i Media-fliken. Visar sig att WordPress/PHP har en standardkatalog när man laddar upp filer som är c:\windows\temp. När filen är uppladdad så flyttas den från det katalogen in i wordpress content MED de rättigheter som var satta på filen. Nästan ingen har behörigheter i c:\windows\temp – så Application Pool användaren som körde WordPress kunde inte komma åt/läsa filerna längre. Man fixar det i PHP.INI genom att sätta “upload_tmp_dir ” till en lämplig katalog. Enklast är att ha en katalog under wordpress-installationen så vet man att behörigheterna är OK.

PHP, WordPress och IIS

Php 5 anses förlegat och osäkert, så man uppmanas att uppdatera till nyaste versionen av PHP 7 ( just nu 7.3.8 ). När man gör det så försvinner stödet för det gamla API:t mot MySQL och man kan få mystiska errors på sin WordPress-sajt. Eller om man försöker installera WordPress så går inte själva installations-wizarden igång alls. Det man behöver se till att göra då är att aktivera “extensions” i php.ini samt att aktivera de MySQL extensions som krävs, även det i PHP.ini. Vad jag kan se så är detta denna extension som krävs:

extension=mysqli

Jag hade även en hel del huvudvärk över att jag aktiverat WinCache. Då den låser php.ini filen i sin cache och även om man stoppar IIS så kan man inte redigera php.ini. Det finns en php.wincache.ini.bak som man kan redigera och den skall då ersätta php.ini via automagi. Jag upplevde inte att det funkade. Googlar man detta så är det många som upplever Wincache som mysko och svårt tillsammans med IIS.

Sista tipset, i wordpress-config.php så kan man slänga in:

define( ‘WP_DEBUG’, true );

Så får man tydligare felmeddelanden när man ska felsöka.